package com.gopay.common.domain.cbrmb.customs.base;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import com.gopay.common.constants.cbrmb.customs.NameSpace;
/**
 * 
 * @ClassName: InventoryHead 
 * @Description:进口清单回执 
 * @author gd.cui 
 * @date 2017年1月20日 下午2:27:26
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "guid" })
@XmlRootElement(name = "InventoryHead", namespace = NameSpace.NAMESPACE_CEB_URI)
public class InventoryHead {
   
	/**
	 * 企业系统生成36位唯一序号（英文字母大写）。
	 */
	@XmlElement(name = "guid", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String guid;
	
	/**
	 * 企业报送类型。1-新增 2-变更 3-删除。默认为1。
	 */
	@XmlElement(name = "appType", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String appType;
	
	/**
	 * 企业报送时间。格式:YYYYMMDDhhmmss。
	 */
	@XmlElement(name = "appTime", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String appTime;
	
	/**
	 * 业务状态:1-暂存,2-申报,默认为1。填写2时,Signature节点必须填写.
	 */
	@XmlElement(name = "appStatus", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String appStatus;
	
	/**
	 * 交易平台的订单编号，同一交易平台的订单编号应唯一。订单编号长度不能超过60位。
	 */
	@XmlElement(name = "orderNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String orderNo;
	
	/**
	 * 电商平台的海关注册登记编号；电商平台未在海关注册登记，由电商企业发送订单的，以中国电子口岸发布的电商平台标识编号为准。
	 */
	@XmlElement(name = "ebpCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String ebpCode;
	
	/**
	 * 电商平台的海关注册登记名称；电商平台未在海关注册登记，由电商企业发送订单的，以中国电子口岸发布的电商平台名称为准。
	 */
	@XmlElement(name = "ebpName", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String ebpName;
	
	/**
	 * 电商企业的海关注册登记编号。
	 */
	@XmlElement(name = "ebcCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String ebcCode;
	
	/**
	 * 电商企业的海关注册登记名称。
	 */
	@XmlElement(name = "ebcName", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String ebcName;
	
    /**
     * 物流企业的运单包裹面单号。同一物流企业的运单编号在6个月内不重复。运单编号长度不能超过60位。	
     */
	@XmlElement(name = "logisticsNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String logisticsNo;
	
	/**
	 * 物流企业的海关注册登记编号。
	 */
	@XmlElement(name = "logisticsCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String logisticsCode;
	
	/**
	 * 物流企业在海关注册登记的名称。
	 */
	@XmlElement(name = "logisticsName", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String logisticsName;
	
	/**
	 * 企业内部标识单证的编号。
	 */
	@XmlElement(name = "copNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String copNo;
	
	/**
	 * 电子口岸标识单证的编号。
	 */
	@XmlElement(name = "preNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String preNo;
	
	/**
	 * 担保扣税的企业海关注册登记编号，只限清单的电商平台企业、电商企业、物流企业。
	 */
	@XmlElement(name = "assureCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String assureCode;
	
	
	/**
	 * 保税模式必填，填写区内仓储企业在海关备案的账册编号，用于保税进口业务在特殊区域辅助系统记账（二线出区核减）。
	 */
	@XmlElement(name = "emsNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String emsNo;
	
	/**
	 * 海关接受申报生成的清单编号。
	 */
	@XmlElement(name = "invtNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String invtNo;
	
	/**
	 * I-进口,E-出口
	 */
	@XmlElement(name = "ieFlag", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String ieFlag;
	
	/**
	 * 申报日期，以海关计算机系统接受清单申报数据时记录的日期为准。格式:YYYYMMDD。
	 */
	@XmlElement(name = "declTime", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String declTime;
	
	/**
	 * 接受清单申报的海关关区代码，参照JGS/T 18《海关关区代码》。
	 */
	@XmlElement(name = "customsCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String customsCode;
	
	/**
	 * 商品实际进出我国关境口岸海关的关区代码，参照JGS/T 18《海关关区代码》。
	 */
	@XmlElement(name = "portCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String portCode;
	
	/**
	 * 运载所申报商品的运输工具申报进境的日期，进口申报时无法确知相应的运输工具的实际进境日期时，免填。格式:YYYYMMDD
	 */
	@XmlElement(name = "ieDate", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String ieDate;
	
	/**
	 * 1-身份证,2-其它。限定为身份证，填写“1”。
	 */
	@XmlElement(name = "buyerIdType", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String buyerIdType;
	
	/**
	 * 订购人的身份证件号码。
	 */
	@XmlElement(name = "buyerIdNumber", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String buyerIdNumber;
	
	/**
	 * 订购人的真实姓名。
	 */
	@XmlElement(name = "buyerName", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String buyerName;
	
	/**
	 * 订购人电话。
	 */
	@XmlElement(name = "buyerTelephone", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String buyerTelephone;
	
	/**
	 * 收件地址。
	 */
	@XmlElement(name = "consigneeAddress", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String consigneeAddress;
	
	/**
	 * 申报单位的海关注册登记编号。
	 */
	@XmlElement(name = "agentCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String agentCode;
	
	/**
	 * 申报单位在海关注册登记的名称。
	 */
	@XmlElement(name = "agentName", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String agentName;
	
	
	/**
	 * 保税模式必填，区内仓储企业的海关注册登记编号。
	 */
	@XmlElement(name = "areaCode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String areaCode;
	
	/**
	 * 保税模式必填，区内仓储企业在海关注册登记的名称。
	 */
	@XmlElement(name = "areaName", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String areaName;
	
	/**
	 * 直购进口填写“9610”，保税进口填写“1210”。
	 */
	@XmlElement(name = "tradeMode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String tradeMode;
	
	/**
	 * 填写海关标准的参数代码，参照《JGS-20 海关业务代码集》- 运输方式代码。直购进口指跨境段物流运输方式，保税进口指二线出区物流运输方式。
	 */
	@XmlElement(name = "trafMode", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String trafMode;
	
	/**
	 * 直购进口必填。货物进出境的运输工具的名称或运输工具编号。填报内容应与运输部门向海关申报的载货清单所列相应内容一致；同报关单填制规范。保税进口免填。
	 */
	@XmlElement(name = "trafNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String trafNo;
	
	/**
	 * 直购进口必填。货物进出境的运输工具的航次编号。保税进口免填。
	 */
	@XmlElement(name = "voyageNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String voyageNo;
	
	
	/**
	 * 直购进口必填。货物提单或运单的编号，保税进口免填。
	 */
	@XmlElement(name = "billNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String billNo;
	
	/**
	 * 针对同一申报地海关下有多个跨境电子商务的监管场所,需要填写区分
	 */
	@XmlElement(name = "loctNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String loctNo;
	
	/**
	 * 商务主管部门及其授权发证机关签发的进出口货物许可证件的编号
	 */
	@XmlElement(name = "licenseNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String licenseNo;
	
	/**
	 * 直购进口填写起始发出国家（地区）代码，参照《JGS-20 海关业务代码集》的国家（地区）代码表；保税进口填写代码“142”。
	 */
	@XmlElement(name = "country", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String country;
	
	/**
	 * 物流企业实际收取的运输费用。
	 */
	@XmlElement(name = "freight", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String freight;
	
	/**
	 * 物流企业实际收取的商品保价费用。
	 */
	@XmlElement(name = "insuredFee", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String insuredFee;
	
	/**
	 * 限定为人民币，填写“142”。
	 */
	@XmlElement(name = "currency", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String currency;
	
	/**
	 * 海关对进出口货物实际采用的外部包装方式的标识代码，采用1 位数字表示，如：木箱、纸箱、桶装、散装、托盘、包、油罐车等
	 */
	@XmlElement(name = "wrapType", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String wrapType;
	
	/**
	 * 件数为包裹数量，限定为“1”。
	 */
	@XmlElement(name = "packNo", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String packNo;
	
	/**
	 * 货物及其包装材料的重量之和，计量单位为千克。
	 */
	@XmlElement(name = "grossWeight", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String grossWeight;
	
	/**
	 * 货物的毛重减去外包装材料后的重量，即货物本身的实际重量，计量单位为千克。
	 */
	@XmlElement(name = "netWeight", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String netWeight;
	
	/**
	 * 备注
	 */
	@XmlElement(name = "note", namespace = NameSpace.NAMESPACE_CEB_URI, required = true)
	private String note;

	public String getGuid() {
		return guid;
	}

	public void setGuid(String guid) {
		this.guid = guid;
	}

	public String getAppType() {
		return appType;
	}

	public void setAppType(String appType) {
		this.appType = appType;
	}

	public String getAppTime() {
		return appTime;
	}

	public void setAppTime(String appTime) {
		this.appTime = appTime;
	}

	public String getAppStatus() {
		return appStatus;
	}

	public void setAppStatus(String appStatus) {
		this.appStatus = appStatus;
	}

	public String getOrderNo() {
		return orderNo;
	}

	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	public String getEbpCode() {
		return ebpCode;
	}

	public void setEbpCode(String ebpCode) {
		this.ebpCode = ebpCode;
	}

	public String getEbpName() {
		return ebpName;
	}

	public void setEbpName(String ebpName) {
		this.ebpName = ebpName;
	}

	public String getEbcCode() {
		return ebcCode;
	}

	public void setEbcCode(String ebcCode) {
		this.ebcCode = ebcCode;
	}

	public String getEbcName() {
		return ebcName;
	}

	public void setEbcName(String ebcName) {
		this.ebcName = ebcName;
	}

	public String getLogisticsNo() {
		return logisticsNo;
	}

	public void setLogisticsNo(String logisticsNo) {
		this.logisticsNo = logisticsNo;
	}

	public String getLogisticsCode() {
		return logisticsCode;
	}

	public void setLogisticsCode(String logisticsCode) {
		this.logisticsCode = logisticsCode;
	}

	public String getLogisticsName() {
		return logisticsName;
	}

	public void setLogisticsName(String logisticsName) {
		this.logisticsName = logisticsName;
	}

	public String getCopNo() {
		return copNo;
	}

	public void setCopNo(String copNo) {
		this.copNo = copNo;
	}

	public String getPreNo() {
		return preNo;
	}

	public void setPreNo(String preNo) {
		this.preNo = preNo;
	}

	public String getAssureCode() {
		return assureCode;
	}

	public void setAssureCode(String assureCode) {
		this.assureCode = assureCode;
	}

	public String getEmsNo() {
		return emsNo;
	}

	public void setEmsNo(String emsNo) {
		this.emsNo = emsNo;
	}

	public String getInvtNo() {
		return invtNo;
	}

	public void setInvtNo(String invtNo) {
		this.invtNo = invtNo;
	}

	public String getIeFlag() {
		return ieFlag;
	}

	public void setIeFlag(String ieFlag) {
		this.ieFlag = ieFlag;
	}

	public String getDeclTime() {
		return declTime;
	}

	public void setDeclTime(String declTime) {
		this.declTime = declTime;
	}

	public String getCustomsCode() {
		return customsCode;
	}

	public void setCustomsCode(String customsCode) {
		this.customsCode = customsCode;
	}

	public String getPortCode() {
		return portCode;
	}

	public void setPortCode(String portCode) {
		this.portCode = portCode;
	}

	public String getIeDate() {
		return ieDate;
	}

	public void setIeDate(String ieDate) {
		this.ieDate = ieDate;
	}

	public String getBuyerIdType() {
		return buyerIdType;
	}

	public void setBuyerIdType(String buyerIdType) {
		this.buyerIdType = buyerIdType;
	}

	public String getBuyerIdNumber() {
		return buyerIdNumber;
	}

	public void setBuyerIdNumber(String buyerIdNumber) {
		this.buyerIdNumber = buyerIdNumber;
	}

	public String getBuyerName() {
		return buyerName;
	}

	public void setBuyerName(String buyerName) {
		this.buyerName = buyerName;
	}

	public String getBuyerTelephone() {
		return buyerTelephone;
	}

	public void setBuyerTelephone(String buyerTelephone) {
		this.buyerTelephone = buyerTelephone;
	}

	public String getConsigneeAddress() {
		return consigneeAddress;
	}

	public void setConsigneeAddress(String consigneeAddress) {
		this.consigneeAddress = consigneeAddress;
	}

	public String getAgentCode() {
		return agentCode;
	}

	public void setAgentCode(String agentCode) {
		this.agentCode = agentCode;
	}

	public String getAgentName() {
		return agentName;
	}

	public void setAgentName(String agentName) {
		this.agentName = agentName;
	}

	public String getAreaCode() {
		return areaCode;
	}

	public void setAreaCode(String areaCode) {
		this.areaCode = areaCode;
	}

	public String getAreaName() {
		return areaName;
	}

	public void setAreaName(String areaName) {
		this.areaName = areaName;
	}

	public String getTradeMode() {
		return tradeMode;
	}

	public void setTradeMode(String tradeMode) {
		this.tradeMode = tradeMode;
	}

	public String getTrafMode() {
		return trafMode;
	}

	public void setTrafMode(String trafMode) {
		this.trafMode = trafMode;
	}

	public String getTrafNo() {
		return trafNo;
	}

	public void setTrafNo(String trafNo) {
		this.trafNo = trafNo;
	}

	public String getVoyageNo() {
		return voyageNo;
	}

	public void setVoyageNo(String voyageNo) {
		this.voyageNo = voyageNo;
	}

	public String getBillNo() {
		return billNo;
	}

	public void setBillNo(String billNo) {
		this.billNo = billNo;
	}

	public String getLoctNo() {
		return loctNo;
	}

	public void setLoctNo(String loctNo) {
		this.loctNo = loctNo;
	}

	public String getLicenseNo() {
		return licenseNo;
	}

	public void setLicenseNo(String licenseNo) {
		this.licenseNo = licenseNo;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public String getFreight() {
		return freight;
	}

	public void setFreight(String freight) {
		this.freight = freight;
	}

	public String getInsuredFee() {
		return insuredFee;
	}

	public void setInsuredFee(String insuredFee) {
		this.insuredFee = insuredFee;
	}

	public String getCurrency() {
		return currency;
	}

	public void setCurrency(String currency) {
		this.currency = currency;
	}

	public String getWrapType() {
		return wrapType;
	}

	public void setWrapType(String wrapType) {
		this.wrapType = wrapType;
	}

	public String getPackNo() {
		return packNo;
	}

	public void setPackNo(String packNo) {
		this.packNo = packNo;
	}

	public String getGrossWeight() {
		return grossWeight;
	}

	public void setGrossWeight(String grossWeight) {
		this.grossWeight = grossWeight;
	}

	public String getNetWeight() {
		return netWeight;
	}

	public void setNetWeight(String netWeight) {
		this.netWeight = netWeight;
	}

	public String getNote() {
		return note;
	}

	public void setNote(String note) {
		this.note = note;
	}
	
}
